package com.ushine.web.template.transactional;
/*
 * 事务控制模板包
 *  @Transactional(readOnly = true): 从这一点设置的时间点开始（时间点a）到这个事务结束的过程中，
 *              其他事务所提交的数据，该事务将看不见！（查询中不会出现别人在时间点a之后提交的数据）
 *
 *
 *  //单一事务操作，必须指定回滚的异常类型
 *  @Transactional(rollbackFor = Exception.class)
 *  public void insert(FirstTransactionDO firstTransaction) {
 *      save(firstTransaction);
 *  }
 *
 *
 *   // 涉及多个service的事务控制
 *   @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
 *   public void insetFirstAndSecondException(FirstTransactionDO firstTransaction, SecondTransactionDO secondTransaction) {
 *      注意：涉及图片保存、redis其他操作，均先保存数据库记录，然后再做其他操作、
 *      这样才能保证其他操作出现异常，数据库信息能够自动回滚
 *       firstTransactionService.insert(firstTransaction);
 *      secondTransactionService.insertByException(secondTransaction);
 *      //其他业务处理：一定要放到数据库操作之后
 *   }
 */